1 创建节点
1.1 createElement 创建元素节点
1.2 createTextNode 创建文本节点
1.3 appendChild 添加元素
如在tasks列表中添加一个新的task
// Create element
const li = document.createElement("li");
// Add class
li.className = 'collection-item';
// Add id
li.id = 'new-item';
// Add attribute
li.setAttribute('title','New Item');
// Create text node and append
li.appendChild(document.createTextNode('Hello World'));
// Create new link element
const link = document.createElement('a');
// Add className
link.className = 'delete-item secondary-content';
// Add icon html
link.innerHTML = '<i class="fa fa-remove"></i>';
// Append link into li
li.appendChild(link);
// Append li as child to ul
document.querySelector('ul.collection').appendChild(li);
1.4 createDocumentFragment文档碎片
- 相当于一块缓存
- 用于暂时存储要添加的元素
- 相比使用innerHTML拼接与直接在父元素中使用appendChild效率会高很多
2 replace element
2.1 replaceChild
// Create Element
const newHeading = document.createElement('h2');
// Add id
newHeading.id = 'task-title';
// New text node
newHeading.appendChild(document.createTextNode('Task List'));
// Get the old heading
const oldHeading = document.getElementById('task-title');
// Parent
const cardAction = document.querySelector('.card-action');
// Replace
cardAction.replaceChild(newHeading,oldHeading);
3 remove element
3.1 remove
const lis = document.querySelectorAll('li');
// Remove list item
lis[0].remove();
3.2 removeChild
const list = document.querySelector('ul');
// Remove list item
list.removeChild(lis[3]);
3.2.1 删除全部子节点
function clearTasks(){
// taskList.innerHTML = '';
while(taskList.firstChild){
taskList.removeChild(taskList.firstChild);
}
}
4 Classes
const fisrtLi = document.querySelector('li:first-child');
const link = firstLi.child[0];
link.className;
link.classList;
link.classList[0];
link.classList.add('test');
link.classList.remove('test');
5 Attributes
link.getAttribute('href');
link.setAttribute('href','https://google.com');
link.setAttribute('title','Google');
link.hasAttribute('title'); // true or false
link.removeAttribute('title');
5.5 表格创建相关
5.5.1 insertRow
- table的操作
5.5.2 insertCell
row的操作
5.5.3 玩法:动态创建和删除表格⭐⭐

let btn = document.getElementById("btn"),
table = document.querySelector("table");
// 创建表格
btn.onclick = function () {
let rows = parseInt(prompt("请输入要创建的行数"));
let cols = parseInt(prompt("请输入要创建的列数"));
// 表格体
for (let i = 0; i < rows; i++) {
// Create an empty <tr> element and add it to the i position of the table:
let row = table.insertRow(i)
row.className = "current"
for (let j = 0; j < cols; j++) {
// Insert new cells (<td> elements) at the j position of the "new" <tr> element:
let cell = row.insertCell(j);
cell.innerHTML = `(${i + 1},${j + 1})`;
}
// 删除按钮
let cell = row.insertCell(cols);
cell.innerHTML = "点击删除";
cell.onclick = function () {
row.remove();
}
}
}
5.6 insertBefore(插入元素,参照元素)
5.6.1 插入第一个元素
如插入错误提示信息
parentNode.insertBefore(targetElement,parentNode.children[0]);
5.7 cloneNode
5.7.1 深层复制 true
5.7.2 浅层复制 false 或者参数为空
// 深层复制
let cloneEl = element.cloneNode(true)
// 浅层复制
let cloneEl1 = element.cloneNode()
let cloneEl2 = element.cloneNode(false)
